2. 컬렉션 캡슐화하기

  • 필요한 인터페이스만 노출하자
  • 무분별한 Getter/Setter 보다 Getter할 대상의 필요한 인터페이스(add, remove, etc.)만 노출

예시 코드

class Refrigerator {
    constructor() {
    this._grocery = []
    }

    get grocery() {
    return this._grocery
    }

    set grocery(arg) {
    this._grocery = arg
    }
}

// 사실 grocery는 Reference 객체라서 set을 안해도 됩니다.
const myRefrigerator = new Refrigerator()
myRefrigerator.grocery(myRefrigerator.grocery.concat('Egg'))

const myGroceryCabinet = myRefrigerator.grocery
myGroceryCabinet.push('Tofu')
myRefrigerator.grocery(myGroceryCabinet)

myGroceryCabinet.splice(
    this._grocery.findIndex((item) => item === 'Tofu'),
    1
)
myRefrigerator.grocery(myGroceryCabinet)
class Refrigerator {
    constructor() {
    this._grocery = []
    }

    addGrocery(grocery) {
    this._grocery.push(grocery)
    }

    removeGrocery(arg) {
    this._grocery.splice(
        this._grocery.findIndex((item) => item === arg),
        1
    )
    }
}

const myRefrigerator = new Refrigerator()
myRefrigerator.addGrocery('Egg')
myRefrigerator.addGrocery('Tofu')
myRefrigerator.removeGrocery('Tofu')

results matching ""

    No results matching ""